{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# python notebook for Make Your Own Neural Network\n",
    "# working with the MNIST data set\n",
    "# this code demonstrates rotating the training images to create more examples\n",
    "#\n",
    "# (c) Tariq Rashid, 2016\n",
    "# license is GPLv2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy\n",
    "import matplotlib.pyplot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# scipy.ndimage for rotating image arrays\n",
    "import scipy.ndimage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# open the CSV file and read its contents into a list\n",
    "data_file = open(\"mnist_dataset/mnist_train_100.csv\", 'r')\n",
    "data_list = data_file.readlines()\n",
    "data_file.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# which record will be use\n",
    "record = 6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# scale input to range 0.01 to 1.00\n",
    "all_values = data_list[record].split(',')\n",
    "scaled_input = ((numpy.asfarray(all_values[1:]) / 255.0 * 0.99) + 0.01).reshape(28,28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.01\n",
      "1.0\n"
     ]
    }
   ],
   "source": [
    "print(numpy.min(scaled_input))\n",
    "print(numpy.max(scaled_input))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x1460f28a0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAZ/ElEQVR4nO3df0xV9/3H8ddF5aotXIYIFyZatFa3qixzwoits5EILHH+WqJtl2hjNDrspq5r42K1rlvYbNJvY8M0WTJpk6qtSdXUZG4WC6Ybukg1xtgSMWziBGxduBexIJHP9w/j3a7ij4v38ubi85GcRO49H+7b01OeHu7l4nHOOQEA0McSrAcAADycCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADAx2HqAW3V3d+vixYtKSkqSx+OxHgcAECHnnNra2pSVlaWEhDtf5/S7AF28eFHZ2dnWYwAAHlBjY6NGjRp1x/v7XYCSkpIk3Rg8OTnZeBoAQKSCwaCys7NDX8/vJGYBKi8v1xtvvKHm5mbl5ubq7bffVl5e3j3X3fy2W3JyMgECgDh2r6dRYvIihPfff1/r1q3Tpk2b9Nlnnyk3N1dFRUW6dOlSLB4OABCHYhKgN998U8uXL9cLL7ygb3/729q+fbuGDx+uP/3pT7F4OABAHIp6gK5du6ba2loVFhb+90ESElRYWKiamprb9u/s7FQwGAzbAAADX9QD9NVXX+n69evKyMgIuz0jI0PNzc237V9WViafzxfaeAUcADwczH8Qdf369QoEAqGtsbHReiQAQB+I+qvg0tLSNGjQILW0tITd3tLSIr/ff9v+Xq9XXq832mMAAPq5qF8BJSYmaurUqaqsrAzd1t3drcrKShUUFET74QAAcSomPwe0bt06LVmyRN/73veUl5ent956S+3t7XrhhRdi8XAAgDgUkwAtWrRIX375pTZu3Kjm5mZ95zvf0cGDB297YQIA4OHlcc456yH+VzAYlM/nUyAQ4J0QACAO3e/XcfNXwQEAHk4ECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADAxGDrAYD+5PXXX494zcaNGyNek5eXF/Gav/71rxGv8fl8Ea8B+gpXQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACd6MFANSa2trr9Zt3bo14jUJCZH/O662tjbiNefPn494zeTJkyNeA/QVroAAACYIEADARNQD9Nprr8nj8YRtEydOjPbDAADiXEyeA3ryySf18ccf//dBBvNUEwAgXEzKMHjwYPn9/lh8agDAABGT54DOnj2rrKwsjR07Vs8///xdX73T2dmpYDAYtgEABr6oByg/P18VFRU6ePCgtm3bpoaGBj399NNqa2vrcf+ysjL5fL7Qlp2dHe2RAAD9kMc552L5AK2trRozZozefPNNLVu27Lb7Ozs71dnZGfo4GAwqOztbgUBAycnJsRwNA1hvfw5o/PjxEa/5z3/+E/Eaj8cT8ZoTJ05EvIafA4KFYDAon893z6/jMX91QEpKip544gnV19f3eL/X65XX6431GACAfibmPwd05coVnTt3TpmZmbF+KABAHIl6gF566SVVV1frn//8p/7+979r/vz5GjRokJ599tloPxQAII5F/VtwFy5c0LPPPqvLly9r5MiReuqpp3T06FGNHDky2g8FAIhjUQ/Q7t27o/0pgYgNHz68V+t+9KMfRbymoqKiV48FPOx4LzgAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwETMfyEdYCExMbFX63JycqI8CYA74QoIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJng3bAxIHR0dvVp34sSJKE8C4E64AgIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATPBmpBiQurq6erXuzJkzUZ4keo4ePRrxmtGjR/fqsXw+X6/WAZHgCggAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMMGbkWJASkpK6tW6tWvXRrxm1apV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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the original image\n",
    "matplotlib.pyplot.imshow(scaled_input, cmap='Greys', interpolation='None')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# create rotated variations\n",
    "# rotated anticlockwise by 10 degrees\n",
    "inputs_plus10_img = scipy.ndimage.rotate(scaled_input, 10.0, cval=0.01, order=1, reshape=False)\n",
    "# rotated clockwise by 10 degrees\n",
    "inputs_minus10_img = scipy.ndimage.rotate(scaled_input, -10.0, cval=0.01, order=1, reshape=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.009999999999999998\n",
      "0.9974879535602992\n"
     ]
    }
   ],
   "source": [
    "print(numpy.min(inputs_plus10_img))\n",
    "print(numpy.max(inputs_plus10_img))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x147463a40>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAbT0lEQVR4nO3df2xV9f3H8del0AtIe1mp7e0dBQv+YAp0GUrXoIijoXQZASWbqEvAGIysGJE5XTcV3Zb0KybOaKou2YTpBJUoEM1k0WJL3AoLaK1E11CsawncomTtLcUW1n6+fxDvvNKK53Jv373l+UhOQu89796PZyc8d7i3pz7nnBMAAINshPUCAADnJwIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMjLRewFf19fXp8OHDysjIkM/ns14OAMAj55w6OzsVCoU0YsTA1zlDLkCHDx9Wfn6+9TIAAOeotbVVEydOHPD5IRegjIwMSacXnpmZabwaAIBXkUhE+fn50b/PB5K0AFVVVenRRx9VOBxWYWGhnnzySc2ePfusc1/8s1tmZiYBAoAUdra3UZLyIYSXXnpJa9eu1bp16/Tuu++qsLBQpaWlOnr0aDJeDgCQgpISoMcee0wrV67Urbfeqssvv1zPPPOMxo4dq2effTYZLwcASEEJD9DJkye1b98+lZSU/O9FRoxQSUmJ6urqzti/p6dHkUgkZgMADH8JD9Bnn32m3t5e5ebmxjyem5urcDh8xv6VlZUKBALRjU/AAcD5wfwHUSsqKtTR0RHdWltbrZcEABgECf8UXHZ2ttLS0tTW1hbzeFtbm4LB4Bn7+/1++f3+RC8DADDEJfwKKD09XbNmzVJ1dXX0sb6+PlVXV6u4uDjRLwcASFFJ+TmgtWvXavny5bryyis1e/ZsPf744+rq6tKtt96ajJcDAKSgpAToxhtv1KeffqoHH3xQ4XBY3/3ud7Vjx44zPpgAADh/+ZxzznoRXxaJRBQIBNTR0cGdEAAgBX3Tv8fNPwUHADg/ESAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgImR1gsAUl1fX5/nGZ/PNygzwFDGFRAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIKbkWLI++STTzzPPPXUU3G9Vn19veeZX/7yl55n5syZ43nG7/d7ngGGMq6AAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAAT3IwUg6q3t9fzzN69ez3P/OUvf/E8I0mffvqp55lp06Z5niksLPQ8w81IMdxwBQQAMEGAAAAmEh6ghx56SD6fL2aL558oAADDW1LeA7riiiv01ltv/e9FRvJWEwAgVlLKMHLkSAWDwWR8awDAMJGU94AOHDigUCikKVOm6JZbblFLS8uA+/b09CgSicRsAIDhL+EBKioq0saNG7Vjxw49/fTTam5u1jXXXKPOzs5+96+srFQgEIhu+fn5iV4SAGAISniAysrK9OMf/1gzZ85UaWmp/vrXv6q9vV0vv/xyv/tXVFSoo6MjurW2tiZ6SQCAISjpnw4YP368Lr30UjU1NfX7vN/v5wfsAOA8lPSfAzp+/LgOHjyovLy8ZL8UACCFJDxA99xzj2pra/XJJ5/oH//4h66//nqlpaXppptuSvRLAQBSWML/Ce7QoUO66aabdOzYMV144YW6+uqrtXv3bl144YWJfikAQApLeIBefPHFRH9LDCN9fX2eZ+L559ucnBzPM5IUDoc9zwz0/ubXOXHihOeZCRMmeJ4BhjLuBQcAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmEj6L6QDvmzkSO+n3BVXXOF5pqioyPOMJDU0NHie+fDDDz3PdHd3e54BhhuugAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCu2FjUPl8Ps8z48aN8zzT29vreUaKb32tra2eZ8LhsOeZ/Px8zzN+v9/zjBTfcQC84goIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADDBzUgx5P33v//1PBPvzUjjuXlnT0+P55nNmzd7nklPT/c8U1hY6HlGkkaPHh3XHOAFV0AAABMECABgggAB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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the +10 degree rotated variation\n",
    "matplotlib.pyplot.imshow(inputs_plus10_img, cmap='Greys', interpolation='None')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x15011b5f0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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wAQBAgCYIEAAABMECABgggABAEwQIACACQIEADDBxUgxIKWlxfdvqxtvvNHzmtmzZ3te8/nnn3te8+WXX3pes23bNs9rJOnmm2/2vCYYDMb1WBi8OAMCAJggQAAAE54DtGvXLs2fP18FBQXy+XyXneI757Rq1Srl5+dr+PDhKisr06FDhxI1LwBggPAcoO7ubhUXF6umpqbX+9etW6eXX35Zr732mvbs2aMbbrhB5eXlOn369DUPCwAYODy/CaGiokIVFRW93uec00svvaRnn31W99xzjyTp9ddfV15enrZt26ZFixZd27QAgAEjoa8BNTc3q62tTWVlZdHbAoGASkpK1NDQ0OuaSCSicDgcswEABr6EBqitrU2SlJeXF3N7Xl5e9L5LVVdXKxAIRLfCwsJEjgQA6KfM3wVXVVWlUCgU3VpaWqxHAgBcBwkN0IUfRGtvb4+5vb29vc8fUvP7/crKyorZAAADX0IDVFRUpGAwqNra2uht4XBYe/bsUWlpaSIfCgCQ4jy/C+7kyZNqamqKftzc3Kz9+/crOztb48eP14oVK/SLX/xCN998s4qKivTcc8+poKBACxYsSOTcAIAU5zlAe/fu1d133x39eOXKlZKkxYsXa8OGDXrqqafU3d2tRx99VJ2dnbrzzju1Y8cODRs2LHFTAwBSnucAzZ49W865Pu/3+Xxau3at1q5de02DARays7M9rxkzZkwSJrncqVOnPK/597//HddjRSKRuNYBXpi/Cw4AMDgRIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADAhOerYQOI9dlnn3le83VXlE+ksWPHxrWO30yM64EzIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABBcjBa7Rxx9/7HmNz+dLwiSXGzduXFzrhg8fnuBJgMtxBgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmOBipMBFurq6PK9pb2/3vCaei5GOGDHC85p4L0Y6bNiwuNYBXnAGBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCY4GKkwEWam5utR+jT+PHjPa/JyclJwiRAYnAGBAAwQYAAACY8B2jXrl2aP3++CgoK5PP5tG3btpj7lyxZIp/PF7PNmzcvUfMCAAYIzwHq7u5WcXGxampq+txn3rx5am1tjW6bNm26piEBAAOP5zchVFRUqKKi4mv38fv9CgaDcQ8FABj4kvIaUF1dnXJzczV58mQtW7ZMHR0dfe4biUQUDodjNgDAwJfwAM2bN0+vv/66amtr9atf/Ur19fWqqKjQuXPnet2/urpagUAguhUWFiZ6JABAP5TwnwNatGhR9M+33Xabpk2bpkmTJqmurk5z5sy5bP+qqiqtXLky+nE4HCZCADAIJP1t2BMnTlROTo6ampp6vd/v9ysrKytmAwAMfEkP0NGjR9XR0aH8/PxkPxQAIIV4/hbcyZMnY85mmpubtX//fmVnZys7O1tr1qzRwoULFQwGdfjwYT311FO66aabVF5entDBAQCpzXOA9u7dq7vvvjv68YXXbxYvXqxXX31VBw4c0O9//3t1dnaqoKBAc+fO1c9//nP5/f7ETQ0ASHmeAzR79mw55/q8/7333rumgQBLn332mec1X/f3IZFGjBjhec31mg2IB9eCAwCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgImE/0puIJV98cUXntekp6d7XtPT0+N5TXNzs+c1J06c8LxGks6dO+d5TTzHAYMbZ0AAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkuRgpc5JZbbvG8JhgMel7T2trqec1//vMfz2uampo8r5GkSCTiec2IESPieiwMXpwBAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmuBgpcJHCwkLPazo6OpIwSWIcP348rnXp6ekJngS4HGdAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJLkYKXGTq1Kme14wdO9bzmi+++MLzmiFDvP91/de//uV5jSSlpfFvUyQfzzIAgAkCBAAw4SlA1dXVuuOOO5SZmanc3FwtWLBAjY2NMfucPn1alZWVGj16tEaOHKmFCxeqvb09oUMDAFKfpwDV19ersrJSu3fv1vvvv6+zZ89q7ty56u7uju7zxBNP6J133tGWLVtUX1+vY8eO6b777kv44ACA1ObpVc0dO3bEfLxhwwbl5uZq3759mjVrlkKhkH77299q48aN+t73vidJWr9+vb75zW9q9+7d+u53v5u4yQEAKe2aXgMKhUKSpOzsbEnSvn37dPbsWZWVlUX3mTJlisaPH6+GhoZeP0ckElE4HI7ZAAADX9wB6unp0YoVKzRz5szoW1fb2tqUkZGhUaNGxeybl5entra2Xj9PdXW1AoFAdCssLIx3JABACok7QJWVlTp48KA2b958TQNUVVUpFApFt5aWlmv6fACA1BDXD6IuX75c7777rnbt2qVx48ZFbw8Ggzpz5ow6OztjzoLa29sVDAZ7/Vx+v19+vz+eMQAAKczTGZBzTsuXL9fWrVu1c+dOFRUVxdw/ffp0DR06VLW1tdHbGhsbdeTIEZWWliZmYgDAgODpDKiyslIbN27U9u3blZmZGX1dJxAIaPjw4QoEAnrkkUe0cuVKZWdnKysrS48//rhKS0t5BxwAIIanAL366quSpNmzZ8fcvn79ei1ZskSS9Otf/1ppaWlauHChIpGIysvL9Zvf/CYhwwIABg5PAXLOXXGfYcOGqaamRjU1NXEPBViJ58cALv1W9NWI52Kk//3vfz2vOXHihOc10vkrmng1dOjQuB4LgxfXggMAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAICJuH4jKjBQZWVleV5z6623el6zc+dOz2uu5mr0l4pnNklKT0+Pax3gBWdAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJLkYKXMTv93teM3LkSM9rMjMzPa8Jh8Oe13AxUvRnnAEBAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACZ8zjlnPcTFwuGwAoGAQqGQsrKyrMcBrigSiXhe09LS4nnN559/7nnN7bff7nmNJAWDQc9ruIApLrjar+OcAQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAA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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the +10 degree rotated variation\n",
    "matplotlib.pyplot.imshow(inputs_minus10_img, cmap='Greys', interpolation='None')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
